#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
#endregion

namespace SkyBurner
{
    public class BaseDrawableObject : BaseObject
    {
        #region Protected attributes
        protected Matrix m_mxWorld;
        protected Matrix m_mxView;
        protected Matrix m_mxProjection;        
        protected Vector3 m_vLightDirection;
        protected Vector4 m_vLightAmbient;
        protected Vector4 m_vLightDiffuse;
        protected Vector4 m_vLightSpecular;
        protected Effect m_customEffect;
        #endregion

        #region Properties
        public Matrix WorldMatrix
        {
            get { return m_mxWorld; }
            set { m_mxWorld = value; }
        }

        public Matrix ViewMatrix
        {
            get { return m_mxView; }
            set { m_mxView = value; }
        }

        public Matrix ProjectionMatrix
        {
            get { return m_mxProjection; }
            set { m_mxProjection = value; }
        }

        public Vector3 LightDirection
        {
            get { return m_vLightDirection; }
            set { m_vLightDirection = value; }
        }

        public Vector4 LightAmbient
        {
            get { return m_vLightAmbient; }
            set { m_vLightAmbient = value; }
        }

        public Vector4 LightDiffuse
        {
            get { return m_vLightDiffuse; }
            set { m_vLightDiffuse = value; }
        }

        public Vector4 LightSpecular
        {
            get { return m_vLightSpecular; }
            set { m_vLightSpecular = value; }
        }
        #endregion

        public BaseDrawableObject()
            : base()
        {

        }

        public BaseDrawableObject(BaseGame game)
            : base(game)
        {

        }

        public virtual void Update(GameTime gameTime, Camera pActiveCamera)
        {

        }

        public virtual void Draw(GameTime gameTime, Camera pActiveCamera)
        {

        }
    }
}
